Xen-ia64-specific changes to adapt to recent xen-unstable changes
authordjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Fri, 9 Sep 2005 16:31:36 +0000 (10:31 -0600)
committerdjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Fri, 9 Sep 2005 16:31:36 +0000 (10:31 -0600)
Signed-off-by: Dan Magenheimer <dan.magenheimer@hp.com>
xen/arch/ia64/xen/domain.c
xen/arch/ia64/xen/hypercall.c
xen/arch/ia64/xen/xensetup.c
xen/include/asm-ia64/mm.h
xen/include/asm-ia64/xenpage.h
xen/include/asm-ia64/xensystem.h

index efd273440000fdd7abcdf81d2072d74a4bc7efb3..328aabbe5fde237832065f56b331413c02b7d04f 100644 (file)
@@ -1101,3 +1101,19 @@ void vcpu_migrate_cpu(struct vcpu *v, int newcpu)
        set_bit(_VCPUF_cpu_migrated, &v->vcpu_flags);
        v->processor = newcpu;
 }
+
+void sync_vcpu_execstate(struct vcpu *v)
+{
+       ia64_save_fpu(v->arch._thread.fph);
+#ifdef CONFIG_VTI
+       if (VMX_DOMAIN(v))
+               vmx_save_state(v);
+#else
+       if (0) do {} while(0);
+#endif
+       else {
+               if (IA64_HAS_EXTRA_STATE(v))
+                       ia64_save_extra(v);
+       }
+       // FIXME SMP: Anything else needed here for SMP?
+}
index 8abaa48058339850b66bc826727b063b243b2670..4a7eb63633163a37688fca4c4ffa346e2d806786 100644 (file)
@@ -151,7 +151,7 @@ ia64_hypercall (struct pt_regs *regs)
                regs->r8 = do_dom0_op(regs->r14);
                break;
 
-           case __HYPERVISOR_dom_mem_op:
+           case __HYPERVISOR_memory_op:
 #ifdef CONFIG_VTI
                regs->r8 = do_dom_mem_op(regs->r14, regs->r15, regs->r16, regs->r17, regs->r18); 
 #else
index 92fee6a514b1602b46b8234c4e68eb7cd52e5bb5..a9eabb41be75d2178d4cfae87e3f28a5498dc733 100644 (file)
@@ -11,6 +11,7 @@
 #include <xen/multiboot.h>
 #include <xen/sched.h>
 #include <xen/mm.h>
+#include <public/version.h>
 //#include <xen/delay.h>
 #include <xen/compile.h>
 //#include <xen/console.h>
@@ -384,3 +385,17 @@ printk("About to call init_trace_bufs()\n");
 printk("About to call startup_cpu_idle_loop()\n");
     startup_cpu_idle_loop();
 }
+
+void arch_get_xen_caps(xen_capabilities_info_t *info)
+{
+    char *p=info->caps;
+
+    *p=0;
+
+    p+=sprintf(p,"xen_%d.%d_ia64 ",XEN_VERSION,XEN_SUBVERSION);
+
+    BUG_ON((p-info->caps)>sizeof(*info));
+
+    if(p>info->caps) *(p-1) = 0;
+}
+
index f7d5af368ee389c899018344afb026f5df781fde..93acb34776a46563fdbf07dec543ea0f044f3360 100644 (file)
@@ -415,7 +415,7 @@ extern unsigned long *mpt_table;
 /* If pmt table is provided by control pannel later, we need __get_user
 * here. However if it's allocated by HV, we should access it directly
 */
-#define phys_to_machine_mapping(d, gpfn)                       \
+#define get_mfn_from_pfn(d, gpfn)                      \
     ((d) == dom0 ? gpfn :                                      \
        (gpfn <= d->arch.max_pfn ? (d)->arch.pmt[(gpfn)] :      \
                INVALID_MFN))
@@ -424,7 +424,7 @@ extern unsigned long *mpt_table;
     machine_to_phys_mapping[(mfn)]
 
 #define __gpfn_to_mfn(_d, gpfn)                        \
-    phys_to_machine_mapping((_d), (gpfn))
+    get_mfn_from_pfn((_d), (gpfn))
 
 #define __gpfn_invalid(_d, gpfn)                       \
        (__gpfn_to_mfn((_d), (gpfn)) & GPFN_INV_MASK)
index 4025eb1e5147b7465d8f5f4a03d1cf2eb74cdcd8..742978a61b34311636c76980ed55991ef8dcd7e2 100644 (file)
@@ -29,6 +29,25 @@ typedef union xen_va {
        unsigned long l;
        void *p;
 } xen_va;
+
+static inline int get_order_from_bytes(physaddr_t size)
+{
+    int order;
+    size = (size-1) >> PAGE_SHIFT;
+    for ( order = 0; size; order++ )
+        size >>= 1;
+    return order;
+}
+
+static inline int get_order_from_pages(unsigned long nr_pages)
+{
+    int order;
+    nr_pages--;
+    for ( order = 0; nr_pages; order++ )
+        nr_pages >>= 1;
+    return order;
+}
+
 #endif
 
 #undef __pa
index 3cbb3c34a5c7d02b56ef2ce016c3aabd5d843e2d..d5082ac7a8b7f4dff053ff6756f6859137d74d85 100644 (file)
@@ -22,6 +22,7 @@
 #endif // CONFIG_VTI
 
 #define XEN_START_ADDR          0xf000000000000000
+#define HYPERVISOR_VIRT_START   0xf000000000000000
 #undef KERNEL_START
 #define KERNEL_START            0xf000000004000000
 #undef PERCPU_ADDR